package es.sjdigital.rv.logica.cancion;

import es.sjdigital.rv.datos.dao.CancionesDAO;
import es.sjdigital.rv.datos.dao.EtiquetasDAO;
import es.sjdigital.rv.datos.vo.CancionesVO;
import es.sjdigital.rv.datos.vo.EtiquetasVO;
import es.sjdigital.rv.interfaz.cancion.Cancion_dto;
import es.sjdigital.rv.interfaz.cancion.manage.*;
import es.sjdigital.rv.interfaz.etiqueta.Etiqueta_dto;
import es.sjdigital.rv.rv_error.Error;

public class SetCancion {
	public SetCancion_dto_out setCancion(SetCancion_dto_in request) throws Error{
		SetCancion_dto_out response = new SetCancion_dto_out();
		Cancion_dto cancion_dto = request.getCancion();
		CancionesDAO canciones_dao = new CancionesDAO();
		EtiquetasDAO etiquetas_dao = new EtiquetasDAO();
		CancionesVO cancion_vo = new CancionesVO();
		Etiqueta_dto[] etiquetas_dto = request.getCancion().getEtiquetas().getEtiqueta();
		
		
		cancion_vo.setId(cancion_dto.getId());
		cancion_vo.setAutor(cancion_dto.getAutor());
		cancion_vo.setInterprete(cancion_dto.getInterprete());
		cancion_vo.setComentario(cancion_dto.getComentario());
		cancion_vo.setColeccionId(cancion_dto.getId_coleccion());
		cancion_vo.setTipo(cancion_dto.getTipo());
		cancion_vo.setTipo(cancion_dto.getNombre());
		
		//Llamos a crear o actualizar la canción
		int id_cancion = canciones_dao.setCancion(cancion_vo);
		
		//Borramos todos los comentarios de esa canción (si tiene alguno)
		etiquetas_dao.deleteEtiquetas(id_cancion);
		
		//Por cada etiqueta que nos llegue la restablecemos
		for(int i=0; i<etiquetas_dto.length;i++){			
			EtiquetasVO etiqueta_vo = new EtiquetasVO();
			etiqueta_vo.setId(etiquetas_dto[i].getId());
			etiqueta_vo.setTag(etiquetas_dto[i].getTag());
			etiquetas_dao.setEtiqueta(id_cancion, etiqueta_vo);
		}
				
		return response;
	}
}
